package com.application.chiettinhdienluc.db;

import java.util.ArrayList;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import com.application.chiettinhdienluc.app.MainApplication;
import com.application.chiettinhdienluc.model.VattuModel;

public class VatTuDataSource {

	private MySQLiteHelper dbHelper;

	private final String  tableName = "D_VATTU";

	//table column names
	private static final String MA_VATTU = "MA_VATTU";
	private static final String TEN_VATTU = "TEN_VATTU";
	private static final String QUY_CACH = "QUY_CACH";
	private static final String DON_GIA = "DON_GIA";
	private static final String SU_DUNG = "SU_DUNG";
	private static final String GHI_CHU = "GHI_CHU";
	private static final String MA_DVI_QLY = "MA_DVIQLY";
	private static final String NGAY_CAP_NHAT = "NGAY_CAP_NHAT";	

	private final static String TAG = VatTuDataSource.class.getSimpleName();

	public VatTuDataSource() {
		dbHelper = MySQLiteHelper.getInstance();
	}

	public boolean checkVatTuExist(String maVatTu, String maDonVi) {

		boolean existed = false;

		Cursor c = null;
		try {
			if(dbHelper != null && dbHelper.getDb() != null)
			{
				c = dbHelper.getDb().rawQuery("select rowid from "
						+ tableName + " where MA_VATTU = " 
						+ "'" + maVatTu  + "'" + " and " + "MA_DVIQLY = '" + maDonVi + "'" , null);		

				if (c != null && c.getCount() > 0){
					existed = true;			
				}
			}	

			
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally{
			if(c!=null)
			{
				c.close();
				c = null;
			}
		}

		return existed;	
	}



	public long insert(VattuModel vt) {

		long row_id = -1;

		try {			
			if(dbHelper != null && dbHelper.getDb() != null)
			{
				ContentValues cv = new ContentValues();

				cv.put(MA_VATTU, vt.getMaVattu());
				cv.put(TEN_VATTU, vt.getTenVattu());
				cv.put(DON_GIA, vt.getDonGia());
				cv.put(QUY_CACH, vt.getQuyCach());
				cv.put(MA_DVI_QLY, vt.getMaDVIQLY());

				row_id = dbHelper.getDb().insert(tableName, null, cv);	
			}	
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally{
		}

		return row_id;	

	}

	public int updateStatus(VattuModel vt) {

		int numRowEffect = 0;

		try {
			if(dbHelper != null && dbHelper.getDb() != null)
			{
				ContentValues cv = new ContentValues();

				String suDung;

				if (vt.isSuDung()) {
					suDung = "1";
				}
				else {
					suDung = "0";
				}

				cv.put(SU_DUNG, suDung);

				String whereClause = "MA_VATTU" + "=?" + " and " + "MA_DVIQLY" + "=?";
				String[] whereArgs = new String[] {  vt.getMaVattu(), vt.getMaDVIQLY() };

				numRowEffect = dbHelper.getDb().update(tableName, cv,	whereClause, whereArgs);
			}	
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally{
		}

		return numRowEffect;
	}

	public int update(VattuModel vt) {
		int numRowEffect = 0;

		try {
			if(dbHelper != null && dbHelper.getDb() != null)
			{
				ContentValues cv = new ContentValues();

				cv.put(MA_VATTU, vt.getMaVattu());
				cv.put(TEN_VATTU, vt.getTenVattu());
				cv.put(DON_GIA, vt.getDonGia());
				cv.put(QUY_CACH, vt.getQuyCach());
				cv.put(MA_DVI_QLY, vt.getMaDVIQLY());

				String whereClause = "MA_VATTU" + "=?" + " and " + "MA_DVIQLY" + "=?";
				String[] whereArgs = new String[] {  vt.getMaVattu(), vt.getMaDVIQLY() };

				numRowEffect = dbHelper.getDb().update(tableName, cv,	whereClause, whereArgs);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally{
		}

		return numRowEffect;
	}

	public ArrayList<VattuModel> loadVattu()
	{
		ArrayList<VattuModel> result = new ArrayList<VattuModel>();

		Cursor c = null;

		try {
			if(dbHelper != null && dbHelper.getDb() != null)
			{
				c = dbHelper.getDb().rawQuery("select * from " + VattuModel.VATTU_TABLE_NAME + " where MA_DVIQLY = " +   "'" + MainApplication.getMaDonViQuanLy() + "'"+" ORDER BY " +VattuModel.FIELD_TEN_VATTU+","+VattuModel.FIELD_TEN_VATTU +" ASC", null);

				if(c != null && c.getCount() > 0)
				{
					int colId_MaVatTu 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[0]);
					int colId_TenVatTu 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[1]);
					int colId_QuyCach 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[2]);
					int colId_DonGia 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[3]);
					int colId_GhiChu 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[4]);
					int colId_Ma_DVQly 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[5]);
					int colId_SuDung 		= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[6]);
					int colId_NgayCapNhat 	= c.getColumnIndex(VattuModel.VATTU_FULL_PROJECTION[7]);

					c.moveToFirst();
					do {
						try {
							String 	maVattu 	= c.getString(colId_MaVatTu);
							String tenVattu 	= c.getString(colId_TenVatTu);
							String quyCach 	 	= c.getString(colId_QuyCach);
							double donGia 	 	= c.getDouble(colId_DonGia);
							String ghiChu 	 	= c.getString(colId_GhiChu);
							String maDVQLy 	 	= c.getString(colId_Ma_DVQly);
							int suDung 	 		= c.getInt(colId_SuDung);
							String ngayCapNhat 	= c.getString(colId_NgayCapNhat);

							VattuModel vt = new VattuModel();

							vt.setMaVattu(maVattu);
							vt.setTenVattu(tenVattu);
							vt.setQuyCach(quyCach);
							vt.setDonGia(donGia);
							vt.setGhiChu(ghiChu);
							vt.setMaDVIQLY(maDVQLy);
							vt.setSuDung(suDung==1);
							vt.setNgayCapNhat(ngayCapNhat);
							vt.setHasChanged(false);

							result.add(vt);
						} catch (Exception e) {
						}
					}
					while (c.moveToNext());
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally{
			if(c!=null)
			{
				c.close();
				c = null;
			}
		}

		return result;
	}

}